package 双指针;

import com.sun.xml.internal.bind.v2.model.core.ID;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @PackageName: 双指针
 * @ClassName: LeetCode1455
 * @Author: chen jinxu
 * @Date: 2022/8/21 9:54
 * @Description: //检查单词是否为句中其他单词的前缀
 * 给你一个字符串 sentence 作为句子并指定检索词为 searchWord ，其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord
 * 是否为句子 sentence 中任意单词的前缀。
 * <p>
 * 如果searchWord 是某一个单词的前缀，则返回句子sentence 中该单词所对应的下标（下标从 1 开始）。如果 searchWord
 * 是多个单词的前缀，则返回匹配的第一个单词的下标（最小下标）。如果 searchWord 不是任何单词的前缀，则返回 -1 。
 * 字符串 s 的 前缀 是 s 的任何前导连续子字符串
 * <p>
 * 输入：sentence = "i love eating burger", searchWord = "burg"
 * 输出：4
 * 解释："burg" 是 "burger" 的前缀，而 "burger" 是句子中第 4 个单词。
 * 输入：sentence = "this problem is an easy problem", searchWord = "pro"
 * 输出：2
 * 解释："pro" 是 "problem" 的前缀，而 "problem" 是句子中第 2 个也是第 6 个单词，但是应该返回最小下标 2 。
 * 输入：sentence = "i am tired", searchWord = "you"
 * 输出：-1
 * 解释："you" 不是句子中任何单词的前缀。
 * <p>
 * 1 <= sentence.length <= 100
 * 1 <= searchWord.length <= 10
 * sentence 由小写英文字母和空格组成。
 * searchWord 由小写英文字母组成。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class LeetCode1455 {
    public static void main(String[] args) {
        System.out.println(isPrefixOfWord("i love eating burger", "burg"));
        System.out.println(isPrefixOfWord("this problem is an easy problem", "pro"));
        System.out.println(isPrefixOfWord("i am tired", "you"));
    }

    public static int isPrefixOfWord(String sentence, String searchWord) {
        int len = sentence.length();
        int wordIndex = 0;
        int right = 0;
        int left = 0;
        while (right < len) {
            while (right <len && Character.isLetter(sentence.charAt(right))) {
                right ++;
            }
            if (!Character.isLetter(sentence.charAt(left))) {
                left++;
            }
            String word = sentence.substring(left, right);
            wordIndex++;
            if (word.startsWith(searchWord)) {
                return wordIndex;
            }
            left = right++;
        }
        return -1;
    }

    public static int isPrefixOfWord2(String sentence, String searchWord) {
        String[] words = sentence.split(" ");
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < words.length; i++) {
            if (words[i].startsWith(searchWord)) {
                return i + 1;
            }
        }
        return -1;
    }

}
